package ar.com.psicosoft.model.psicosoft;

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;
import java.util.List;

/**
 * The persistent class for the sesion database table.
 * 
 */
@Entity
@Table(name = "sesion", schema = "psicosoft")
@NamedQuery(name = "Sesion.findAll", query = "SELECT s FROM Sesion s")
public class Sesion implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_sesion", sequenceName = "psicosoft.sec_sesion")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_sesion")
	@Column(name = "\"idSesion\"", unique = true, nullable = false)
	private Integer idSesion;

	private Timestamp baja;

	@Column(length = 10)
	private String duracion;

	@Column(name = "\"fechaSesion\"", nullable = false)
	private Timestamp fechaSesion;

	@Column(length = 5)
	private String hora;

	@Column(name = "\"idProfesional\"")
	private Integer idProfesional;

	@Column(name = "\"idTratamiento\"", nullable = false)
	private Integer idTratamiento;

	private double importe;

	@Column(nullable = false, length = 30)
	private String objetivo;

	@Column(length = 2147483647)
	private String observacion;

	// bi-directional many-to-one association to LineaFactura
	@OneToMany(mappedBy = "sesion")
	private List<LineaFactura> lineaFacturas;

	// bi-directional many-to-one association to ProfesionalNuevo
	@ManyToOne
	@JoinColumn(name = "\"idProfesional\"", nullable = false, insertable = false, updatable = false)
	private Profesional profesional;

	// bi-directional many-to-one association to Tratamiento
	@ManyToOne
	@JoinColumn(name = "\"idTratamiento\"", nullable = false, insertable = false, updatable = false)
	private Tratamiento tratamiento;

	public Sesion() {
	}

	public Integer getIdSesion() {
		return this.idSesion;
	}

	public void setIdSesion(Integer idSesion) {
		this.idSesion = idSesion;
	}

	public Timestamp getBaja() {
		return this.baja;
	}

	public void setBaja(Timestamp baja) {
		this.baja = baja;
	}

	public String getDuracion() {
		return this.duracion;
	}

	public void setDuracion(String duracion) {
		this.duracion = duracion;
	}

	public Timestamp getFechaSesion() {
		return this.fechaSesion;
	}

	public void setFechaSesion(Timestamp fechaSesion) {
		this.fechaSesion = fechaSesion;
	}

	public String getHora() {
		return this.hora;
	}

	public void setHora(String hora) {
		this.hora = hora;
	}

	public Integer getIdProfesional() {
		return this.idProfesional;
	}

	public void setIdProfesional(Integer idProfesional) {
		this.idProfesional = idProfesional;
	}

	public Integer getIdTratamiento() {
		return this.idTratamiento;
	}

	public void setIdTratamiento(Integer idTratamiento) {
		this.idTratamiento = idTratamiento;
	}

	public double getImporte() {
		return this.importe;
	}

	public void setImporte(double importe) {
		this.importe = importe;
	}

	public String getObjetivo() {
		return this.objetivo;
	}

	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	public String getObservacion() {
		return this.observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public List<LineaFactura> getLineaFacturas() {
		return this.lineaFacturas;
	}

	public void setLineaFacturas(List<LineaFactura> lineaFacturas) {
		this.lineaFacturas = lineaFacturas;
	}

	public LineaFactura addLineaFactura(LineaFactura lineaFactura) {
		getLineaFacturas().add(lineaFactura);
		lineaFactura.setSesion(this);

		return lineaFactura;
	}

	public LineaFactura removeLineaFactura(LineaFactura lineaFactura) {
		getLineaFacturas().remove(lineaFactura);
		lineaFactura.setSesion(null);

		return lineaFactura;
	}

	public Profesional getProfesional() {
		return this.profesional;
	}

	public void setProfesional(Profesional profesional) {
		this.profesional = profesional;
	}

	public Tratamiento getTratamiento() {
		return this.tratamiento;
	}

	public void setTratamiento(Tratamiento tratamiento) {
		this.tratamiento = tratamiento;
	}

}